package service;

import java.util.ArrayList;

import bean.Rodamiento;
import bean.VOList;
import bean.vo.RodamientoVO;

@SuppressWarnings({"unchecked"})
public abstract class ServiciosRodamiento {
	
	protected static Rodamiento buscarRodamiento (String codigo, String sufijo) throws Exception {
		if (codigo == null || codigo.toLowerCase().equals("")) {
			throw new Exception("Error - codigo de rodamiento es requerido");
		}
		
		Rodamiento r = (Rodamiento) SistemaCVR.getInstancia().buscarEntidad(new Rodamiento(codigo, sufijo));
		return r;
	}
	
	public static RodamientoVO buscarRodamiento (RodamientoVO rd) throws Exception {
		Rodamiento r = ServiciosRodamiento.buscarRodamiento(rd.getCodigo(), rd.getSufijo());
		return r != null ? r.getVO() : null;
	}
	
	public static ArrayList<RodamientoVO> getRodamientos() throws Exception{
		return new VOList<RodamientoVO>().getVoList(SistemaCVR.getInstancia().getEntidades(Rodamiento.class.getName()));
	}
	
	public static void crearRodamiento (RodamientoVO rd) throws Exception {
		if (ServiciosRodamiento.buscarRodamiento(rd) == null) {
			Rodamiento r = new Rodamiento(rd.getCodigo(), rd.getSufijo(), rd.getDescripcion());
			SistemaCVR.getInstancia().agregarEntidad(r);
		} else {
			throw new Exception("ERROR - Ya existe un rodamiento para el codigo/sufijo ingresados.");
		}
	}
	
	public static void eliminarRodamiento (RodamientoVO rd) throws Exception {
		Rodamiento r = ServiciosRodamiento.buscarRodamiento(rd.getCodigo(), rd.getSufijo());
		if (r != null ){
			SistemaCVR.getInstancia().eliminarEntidad(r);
		} else {
			throw new Exception("ERROR - No existe un rodamiento para el codigo/sufijo ingresados.");
		}
	}
}
